package Negocio;

import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.SQLException;
import java.util.ArrayList;




import java.util.List;

import javax.swing.JOptionPane;

import Formularios.Progress;
import Objetos.Clientes;



public class negConsultaClientes extends Thread{
	
	public void run(){
			   ExportarClientes ();
	}
	
	public ArrayList<Clientes> leerClientes() throws SQLException{
		Clientes objCliente = new Clientes();		 
		 return objCliente.obtenerClientes();		
	}
	public void insertarCliente(Clientes objCliente){
		objCliente.insertarCliente(objCliente);		
	}	
	
	
	   public void escribeClientes(int idCliente,String dni,String nombre,String apellido,String file)throws IOException, ClassNotFoundException{
           try{    
                     ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
                     Clientes cliente = new Clientes(idCliente, dni ,nombre,apellido);
                     oos.writeObject(cliente);                 
                    
             oos.close(); 
                   }catch(Exception e){
                           e.printStackTrace();
                   }
           }
   
   public void agregaClientes(int idCliente,String dni,String nombre,String apellido,String file){
       try{
               MiObjectOutputStream oos = new MiObjectOutputStream(new FileOutputStream(file,true));
               Clientes cliente = new Clientes(idCliente, dni ,nombre,apellido);
                  
               oos.writeUnshared(cliente);
               
               oos.close();
           } catch (Exception e)
           {
               e.printStackTrace();
           }
       }
           
   public  ArrayList<Clientes> leerClientes(String file)throws IOException, ClassNotFoundException { 
           ArrayList<Clientes> Listaclientes = new ArrayList<Clientes>();       
   try{   
   ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file)); 
   Object aux = ois.readObject();        
   while (aux!=null)
   {
           Listaclientes.add((Clientes)aux);
               aux = ois.readObject();
   }
   ois.close();        
   return Listaclientes;                  
}
catch (EOFException e1)
{
  return Listaclientes;        
}
   }
   
   public void SetearValoresGrillaClientes(String file){
   
           try{
                   File f = new File(file);
                   if (!f.exists()) {
                           
                   Clientes CarlosRodriguez = new Clientes(1,"34567822","Carlos","Rodriguez");
                   Clientes CristianMorales = new Clientes(2,"34567822","Cristian","Morales");
                   Clientes AnaliaAvalos = new Clientes(3,"34567822","Analia","Avalos");
                   
                 
                   List<Clientes> rowsCliente = new ArrayList<Clientes>();
                   
                   rowsCliente.add(CarlosRodriguez);
                   rowsCliente.add(CristianMorales);
                   rowsCliente.add(AnaliaAvalos);
                   int i = 0;
                   for(Clientes cliente : rowsCliente)
                   {                               
                           if(i == 0){
                                   escribeClientes(cliente.getIdCliente(),cliente.getNroDni(),cliente.getNombre(),cliente.getApellido(),file);
                                   i = 1;
                           }else{
                                   agregaClientes(cliente.getIdCliente(),cliente.getNroDni(),cliente.getNombre(),cliente.getApellido(),file);
                           }
                   }
                   }               
           }catch(Exception i){
               System.out.print("Ocurrio un error" + i.toString());
           }
   }
   

   
   /***
    * Exporta los clientes de la base a un archivo de texto
    */
   public void ExportarClientes(){
	   
       try{
    	   File miDir = new File ("");
		    String file = miDir.getAbsoluteFile() + "Clientes.txt";	
    	   
               File f = new File(file);
             
            	List<Clientes> rowsCliente = leerClientes();//Llamada a la Base de datos...
            	
        		int cantClientes = rowsCliente.size();
        		
        		
        		Progress frmProgress = new Progress(cantClientes);
        		frmProgress.setVisible(true);
        		frmProgress.pack();		
        		int cont = 1;
        		
            	  int i = 0;
           	    for(Clientes cliente : rowsCliente)
           	    {                             
                       if(i == 0){
                               escribeClientes(cliente.getIdCliente(),cliente.getNroDni(),cliente.getNombre(),cliente.getApellido(),file);
                               i = 1;
                               frmProgress.actualizar(cont ++);
                       }else{
                               agregaClientes(cliente.getIdCliente(),cliente.getNroDni(),cliente.getNombre(),cliente.getApellido(),file);
                               frmProgress.actualizar(cont ++);
                       
                       }
                 }
           	    
           	    	JOptionPane.showMessageDialog(null, "Los clientes fueron exportados con exito!."+ file, "Mensaje", JOptionPane.INFORMATION_MESSAGE);
           	    	          	    
                           
       }catch(Exception i){
               System.out.print("Ocurrio un error al exportar la lista de clientes" + i.toString());
       }
}
	
}





